[Overview]
[Previous]
[Next]
From NFAs to Regular Expressions (Part II)
There are two complicated
parts to extracting a regular expression from an NFA: removing states, and
reading the regular expression off the resultant two-state generalized
transition graph.
Here's how to delete a state (this is taken with minor modifications from Figure
3.9 on page 85 of your textbook):
To delete state Q, where Q is neither the initial state nor the final state,
replace
with
.
You should convince yourself that this transformation is "correct", in
the sense that paths which leave you in Qi in the original will leave
you in Qi in the replacement, and similarly for Qj.
- What if state Q has connections to more than two other states, say,
Qi, Qj, and Qk? Then you have to consider
these states pairwise: Qi with Qj, Qj with
Qk, and Qi with Qk.
- What if some of the arcs in the original state are missing? There are too
many cases to work this out in detail, but you should be able to figure it out
for any specific case, using the above as a model.
You will end up with an nfa that looks like this, where r1,
r2, r3, and r4 are (probably very complex)
regular expressions. The resultant nfa represents the regular expression
r1*r2(r4 +
r3r1*r2)*(you should verify that this
is indeed the correct regular expression). All you have to do is plug in the
correct values for r1, r2, r3, and
r4.
Copyright © 1996 by David Matuszek
Last modified Feb 5, 1996